﻿using SportsPlatform.Dto.PermissionManagement.DepartmentInfo;
using SportsPlatform.Base;
using SportsPlatform.Query.PermissionManagement.BaseQuery;
using SportsPlatform.Query.PermissionManagement.DepartmentInfo;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace SportsPlatform.PermissionManagement.IPermissionManagement
{
    /// <summary>
    /// 部门架构信息表
    /// </summary>
    public  interface IDepartmentInfoService
    {
        /// <summary>
        /// 根据Id查询信息
        /// </summary>
        /// <param name="deleteOrQueryModel"></param>
        /// <returns></returns>
        Task<ResultDto<GetDepartmentInfoDto>> GetDepartmentInfo(DeleteOrGetModelQuery deleteOrQueryModel);

        /// <summary>
        /// 获取信息List
        /// </summary>
        /// <param name="getDepartmentInfoQuery"></param>
        /// <returns></returns>
        Task<ResultListDto<GetDepartmentInfoDto>> GetDepartmentInfoList(GetDepartmentInfoQuery getDepartmentInfoQuery);

        /// <summary>
        /// 获取所有的上级List
        /// </summary>
        /// <param name="getDepartmentInfoTreeQuery"></param>
        /// <returns></returns>
        Task<ResultListDto<GetDepartmentInfoTreeDto>> GetDepartmentInfoParentList(GetDepartmentInfoTreeQuery getDepartmentInfoTreeQuery);

        /// <summary>
        /// 获取所有的下级List
        /// </summary>
        /// <param name="getDepartmentInfoTreeQuery"></param>
        /// <returns></returns>
        Task<ResultListDto<GetDepartmentInfoTreeDto>> GetDepartmentInfoChildList(GetDepartmentInfoTreeQuery getDepartmentInfoTreeQuery);

        /// <summary>
        /// 新增信息
        /// </summary>
        /// <param name="addDepartmentInfoQuery"></param>
        /// <returns></returns>
        Task<BaseResultDto> AddDepartmentInfo(AddDepartmentInfoQuery addDepartmentInfoQuery);

        /// <summary>
        /// 更新信息
        /// </summary>
        /// <param name="updateDepartmentInfoQuery"></param>
        /// <returns></returns>
        Task<BaseResultDto> UpdateDepartmentInfo(UpdateDepartmentInfoQuery updateDepartmentInfoQuery);

        /// <summary>
        /// 根据Id删除信息
        /// </summary>
        /// <param name="deleteOrQueryModel"></param>
        /// <returns></returns>
        Task<BaseResultDto> DeleteDepartmentInfo(DeleteOrGetModelQuery deleteOrQueryModel);

        /// <summary>
        /// 是否启用
        /// </summary>
        /// <param name="isStatesModel"></param>
        /// <returns></returns>
        Task<BaseResultDto> IsStatesDepartmentInfo(IsStatesdModel isStatesModel);
    }
}
